package models

import (
	"time"

	"gorm.io/datatypes"
	"gorm.io/gorm"
)

// MaEvent [...]
type MaEvent struct {
	ID               int            `gorm:"autoIncrement:true;primaryKey;column:id;type:int;not null" json:"id" json_old:"ID"`
	SalesID          string         `gorm:"column:sales_id;type:varchar(32);not null;comment:机器识别码" json:"sales_id" json_old:"SalesID"`
	RobotName        string         `gorm:"column:robot_name;type:varchar(128);not null;comment:机器名称" json:"robot_name" json_old:"RobotName"`
	Date             datatypes.Date `gorm:"column:date;type:date;not null;comment:记录日期" json:"-" json_old:"-"`
	DateFormated     string         `gorm:"-" json:"date" json_old:"Date"`
	EventType        string         `gorm:"column:event_type;type:int;not null;comment:事件类型：1软件 2硬件 3其他" json:"event_type" json_old:"EventType"`
	EeventDesc       string         `gorm:"column:event_desc;type:varchar(255);not null;comment:事件问题描述" json:"event_desc" json_old:"EeventDesc"`
	AffectedTime     string         `gorm:"column:affected_time;type:varchar(120);not null;comment:影响的运营时长" json:"affected_time" json_old:"AffectedTime"`
	Move             int            `gorm:"column:move;type:tinyint(1);default:0;comment:机器是否出场 0否 1是" json:"move" json_old:"Move"`
	MoveDesc         string         `gorm:"column:move_desc;type:varchar(128);default:null;comment:出场描述" json:"move_desc" json_old:"MoveDesc"`
	Emergency        int            `gorm:"column:emergency;type:tinyint(1);default:null;comment:突发事件：0否 1是" json:"emergency" json_old:"Emergency"`
	EmergencyDesc    string         `gorm:"column:emergency_desc;type:varchar(120);default:null;comment:突发事件描述" json:"emergency_desc" json_old:"EmergencyDesc"`
	ShopID           string         `gorm:"column:shop_id;type:bigint;not null;comment:商户ID" json:"shop_id" json_old:"ShopID"`
	ShopName         string         `gorm:"-" json:"shop_name" json_old:"ShopName"`
	AddTime          time.Time      `gorm:"column:add_time;type:datetime;not null" json:"add_time" json_old:"AddTime"`
	Location         string         `gorm:"column:location;type:varchar(255);default:null;comment:省市区上传" json:"location" json_old:"Location"`
	Event            string         `gorm:"column:event;type:varchar(255);not null;comment:事件问题" json:"event" json_old:"Event"`
	AffectedTimeMill int            `gorm:"column:affected_time_mill;type:int;default:null;comment:影响运营的时长，毫秒" json:"affected_time_mill" json_old:"AffectedTimeMill"`
	CreatedAt        int64          `gorm:"column:created_at;autoCreateTime;type:int;size:64;comment:创建时间" json:"created_at"`
}

// TableName get sql table name.获取数据库表名
func (m MaEvent) TableName() string {
	return "ma_event"
}

func (m *MaEvent) AfterFind(tx *gorm.DB) (err error) {
	if !time.Time(m.Date).IsZero() {
		DateByte, _ := DateTime(m.Date).MarshalDate()
		m.DateFormated = string(DateByte)
	}
	return
}

// 模式自动注册
func init() {
	Models = append(Models, &MaEvent{})
}
